package cn.tedu.jdkx.jdk8;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        //创建集合对象
        Collection<String> c=new ArrayList<>();
        //添加元素
        c.add("JAVA");
        c.add("C");
        c.add("Python");
        c.add("PHP");
        c.add("C#");
        c.add("C++");
        c.add("GO");

        //筛选出以C开头的元素
        /*for(String s:c){
            //判断每个元素对象内容是否以C开头
            if(s.startsWith("C")){
                System.out.println(s);
            }
        }*/




        //调用方法返回流式结构
        Stream<String> stream = c.stream();
        //过滤指定元素
        /*stream.filter(new Predicate<String>() {
            //重写方法指定过滤规则
            //重写方法可以接收每个元素对象
            @Override
            public boolean test(String s) {
                return s.startsWith("C");
            }
        }).forEach(new Consumer<String>() {
            //输出过滤之后的元素对象内容
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });*/
        //Lambda表达式改写
        stream.filter(s->s.startsWith("C")).sorted
                ((s1,s2)->s2.compareTo(s1))
                .forEach(str-> System.out.println(str));


    }
}
